1. Field of the Invention
The present invention relates to computer systems including an audio interface. More particular, the invention relates to a cache memory for supplying audio signal data to an audio performance device over a system bus.
2. Description of the Related Art
Many present-day computer systems, such as personal computer systems, incorporate multimedia devices such as audio peripherals, motion video peripherals, graphics systems and the like. The multimedia devices are commonly implemented as add-in cards of desktop and portable computers or integrated circuit designs for installation on a system circuit board.
Audio peripherals are commonly available as digital audio systems using a standard Musical Instrument Device Interface (MIDI) serial communication protocol for performance of audio voice signals. One type of audio peripheral is a wavetable-type music synthesizer that uses classic filter, amplifier, and modulation circuits to produce many various musical sounds. A wavetable device synthesizes musical signals from multiple oscillation signals that are stored in a memory, sampled, and synthesized in a plurality of waves in rapid succession. Two fundamental components of a wavetable audio synthesis device are a memory for storing wavetable data and musical signal processing circuits, including a digital signal processor.
An important aspect of the performance of a wavetable audio synthesis device is the effectiveness of the data transfer path between the memory and the musical signal processing circuits. Some systems increase the bandwidth between the memory and the musical signal processing circuits by supplying the musical processing circuits with a local memory interface. However, supplying a local memory in combination with the audio circuits substantially increases the cost and size of the audio peripheral. Furthermore, requiring a special local memory subsystem in combination with the audio peripheral complicates device installation, generally increasing servicing and warranty costs to a manufacturer. Furthermore, the wavetable data must be downloaded to the local memory subsystem, complicating software handling of the audio peripheral and causing delays when data is replaced.
Many advantages are gained by supplying the wavetable data in standard system memory. The general procedure for handling data in a computer system is through the main system memory. Therefore, operating system software generally handles data in a most efficient manner through usage of the main system memory. Data entries from all peripheral storage devices, including magnetic disks, CD-ROM, and the like, are transferred through the main system memory.
However, one problem with the usage of main system memory for supplying wavetable data is the limited bandwidth between the memory and the musical signal processing circuits via the system bus.
One technique for supplying audio data from a wavetable memory 100 within a system pooled memory 102 to an audio processor 104 uses a "horizontal" wavetable cache structure and involves storing music signals as a plurality of voice music signals in the memory 102, accessing a small amount of voice data from memory locations determined substantially at random, and communicating the voice music signals to the audio processor 104 over a system bus 106 a few samples at a time, as illustrated in FIG. 1. The audio processor 104 processes one sample of a plurality of voices, for example 32 voices, in parallel. The data are transferred from the memory 102 to the audio processor 104 via a multiple-queue cache 108 with one queue allocated to each voice. The data are requested from the memory 102 one voice at a time. Data requested for each voice memory access is transmitted to a queue of 32 queues that are allocated one voice per queue. Each queue has a small capacity, for example 32 bytes. The audio processor 104 receives data from one queue to create one sample, processes the sample that corresponds to one voice, then proceeds to the next queue to read the next voice in turn, processing each voice once after processing 32 samples. The amount of data in each of the 32 voice queues is monitored so that a request is made for a particular voice when the amount of data in the voice queue becomes too small. In the horizontal structure, the multiple-quene cache 108 holds samples for each of the synthesizer voices simultaneously,
One problem with the horizontal wavetable cache structure is that the multiple communications of voice data cause congestion on the system bus, impacting the performance of the audio synthesizer.
What is needed is an improved apparatus and technique for communicating data from the main system memory over a system bus to an audio device peripheral.